package com.poly.police.monitor.application.service.sys;

import com.poly.police.monitor.common.core.PageResult;
import com.poly.police.monitor.pojo.validate.commons.PageValidate;
import com.poly.police.monitor.pojo.validate.sys.SysAdminCreateValidate;
import com.poly.police.monitor.pojo.validate.sys.SysAdminSearchValidate;
import com.poly.police.monitor.pojo.validate.sys.SysAdminUpInfoValidate;
import com.poly.police.monitor.pojo.validate.sys.SysAdminUpdateValidate;
import com.poly.police.monitor.pojo.vo.sys.SysAdminDetailVo;
import com.poly.police.monitor.pojo.vo.sys.SysAdminListedVo;
import com.poly.police.monitor.pojo.vo.sys.SysAdminSelvesVo;

/**
 * 系统管理员服务接口类
 */
public interface ISysAdminService {

    /**
     * 管理员列表
     *
     * @author fzr
     * @param pageValidate 分页参数
     * @param searchValidate 搜索参数
     * @return PageResult<SysAdminListedVo>
     */
    PageResult<SysAdminListedVo> list(PageValidate pageValidate, SysAdminSearchValidate searchValidate);

    /**
     * 当前管理员
     *
     * @author fzr
     * @return SysSelfVo
     */
    SysAdminSelvesVo self(Long adminId);

    /**
     * 管理员详情
     *
     * @author fzr
     * @param id 主键参数
     * @return SysAdminDetailVo
     */
    SysAdminDetailVo detail(Long id);

    /**
     * 管理员新增
     *
     * @author fzr
     * @param createValidate 参数
     */
    void add(SysAdminCreateValidate createValidate);

    /**
     * 管理员编辑
     *
     * @author fzr
     * @param updateValidate 参数
     * @param adminId 管理员ID
     */
    void edit(SysAdminUpdateValidate updateValidate, Long adminId);

    /**
     * 当前管理员更新
     *
     * @author fzr
     * @param upInfoValidate 参数
     * @param adminId 管理员ID
     */
    void upInfo(SysAdminUpInfoValidate upInfoValidate, Long adminId);

    /**
     * 管理员删除
     *
     * @author fzr
     * @param id 主键参数
     * @param adminId 管理员ID
     */
    void del(Long id, Long adminId);

    /**
     * 管理员状态切换
     *
     * @author fzr
     * @param id 主键参数
     */
    void disable(Long id, Long adminId);

}
